【Lua基础系列】之类型与值(nil,number,boolean)详细版 | 您所在的位置:网站首页 › lua 转字符串 › 【Lua基础系列】之类型与值(nil,number,boolean)详细版 |
【Lua基础系列】之类型与值详细版
大家好,我是Lampard~~ 为了方便自己的学习以及分享学到的内容,所以我即将要开设Lua基础系列的博客 PS:本博客知识参考资料为:《Lua程序设计第四版》,该书由Lua的创始人2018年所编著,所以大家可以放心去吸收知识 话不多说,开始第一讲的内容:Lua的类型与值 Lua作为在语言中不需要类型定义,而是通过赋值带给变量其自身的类型信息。 在Lua中有8种基本类型,分别是:nil--空,boolean--布尔,number--数值,string--字符串,userdata--用户数据,function--函数,thread--线程,和table--表。我们可以通过调用print(type(变量))来查看变量的数据类型。
接下来我们要对nil,Boolean,number进行详细分析。 (1) nilnil是一种只有一个nil值的类型,它的主要作用是与其他所有值进行区分。Lua语言使用nil值来表示没有有用的值的情况。全局变量第一次被赋值前的默认值就是nil,将nil赋值给全局变量相当于将其删除。 (2) BooleanBoolean类型具有两个值,true和false,他们分别代表了传统的布尔值。不过在Lua中,任何值都能表示条件:Lua定义除了false和nil的值为假之外,所有的值都为真,包括0和空字符串。 逻辑运算符:and,or,not Lua的逻辑运算中,把Boolean类型里面的nil和false当做假,把其他值当做真。 and和or都遵循着短路求值。
对于and来说,如果第一个值为假,则返回第一个值,否则返回第二个值
对于or来说,如果第一个值为真,则返回第一个值,否则返回第二个值 对于not来说,返回值永远为Boolean
(3)number 在Lua5.2之前所有的数值都是双精度的浮点型,在Lua5.3之后引入了整形integer。整形的引入是Lua5.3的一个重要标志。 整形与浮点型的区别: 整形:类似1,2,3,4,5.....在其身后不带小数和指数 浮点型:类似1.2,3.5555,4.57e-3......在其身后带小数点以及指数符号(e)的数字 我们使用type(3) 和type(3.5)返回的都是num 但是如果我们调用math库里面的math.type(3)返回的是integer math.type(3.5)返回的是float
除了加减乘除之外,Lua语言还提供了向下取整除法(floor除法),取模和指数运算 对于加+,减-,乘*来说: int对int型进行运算,则得到的结果都是int型,但只要两个数字中有一个是float型,则得出来的结果都是float型 对于除/来说: 无论是什么操作,得到的结果永远都是float 、 float除法//: 得到的是一个整值,若结果存在小数,则向负无穷截断
产生随机数(math.random()): Lua中产生随机数的三种方式: (1)math.random()-- 产生(0~1)的随机值 (2)math.random(n)-- 产生(1~n)的随机值 (3)math.random(m,n)-- 产生(m~n)的随机值
number类型的取整以及强制转换 number类型的取整,返回结果为整形值: (1)floor()--向负无穷取整 floor(1.5)=1(2)ceil() -- 向正无穷取整 ceil(1.5)=2(3)modf()--向0取整 modf(1.5)=1 modf(-1.5)=-1(4)floor(x+0.5)--四舍五入
number数值类型的强制转换: 整数类型转化成浮点型:+0.0 浮点类型转化成整形:math.tointeger()
表示范围: 最大值math.maxinteger和最小值math.mininteger lua中int型和float型都是使用8个字节来存储的,所以他们有最大值和最小值存在。 当对int最大值加整数1时,会发生回滚,如: math.maxinteger+1=math.mininteger math.mininteger-1=math.maxinteger 但是如果当他们加的是浮点型数字时,就不会发生回滚,而是取近似值 math.maxinteger+1.0=math.maxinteger math.mininteger-1.0=math.mininteger OK,第一篇Lua基础系列到此为止啦,谢谢大家~~
|
CopyRight 2018-2019 实验室设备网 版权所有 |